package com.ehome.poct.base.dao.account.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ehome.mybatisplus.autoconfigure.BaseEntityOld;
import lombok.Data;

import java.util.Date;

/**
 * 终端-代理，（合伙人）
 */
@Data
@TableName(value = "term_agent")
public class TermAgentDO extends BaseEntityOld<TermAgentDO> {
    @TableId(value = "term_agent_id")
    private Long termAgentId;

    /**
     * 诊所编码（诊所编码规则举例 地区code+时间+5位数字）
     */
    @TableField(value="unique_id")
    private String uniqueId;

    /**
     * 登录名
     */
    @TableField(value = "login_name")
    private String loginName;

    /**
     * 登录密码（MD5)
     */
    @TableField(value = "login_pwd")
    private String loginPwd;

    /**
     * 省份
     */
    @TableField(value = "province")
    private String province;

    /**
     * 市
     */
    @TableField(value = "city")
    private String city;

    /**
     * 区
     */
    @TableField(value = "town")
    private String town;

    /**
     * 注册时间
     */
    @TableField(value = "regist_time")
    private Date registTime;

    /**
     * 代理人姓名
     */
    @TableField(value = "`name`")
    private String name;

    /**
     * 头像
     */
    @TableField(value = "head_img")
    private String headImg;

    /**
     * 推广二维码
     */
    @TableField(value = "qrcode")
    private String qrcode;

    /**
     * 手机号码
     */
    @TableField(value = "phone")
    private String phone;

    /**
     * 地址
     */
    @TableField(value = "address")
    private String address;

    /**
     * 标签 （活跃代理，新代理，沉寂代理等等）
     */
    @TableField(value = "tag")
    private String tag;

    /**
     * 备注
     */
    @TableField(value = "remarks")
    private String remarks;

    /**
     * 代理模式
     * 0-直营，1-代理(事业部)，2-新玩法, 3-散户。4 公司方式（苏中），5.营销中心模式
     */
    @TableField(value = "agent_model")
    private Integer agentModel;

    /**
     * 负责地区名称（多个区域使用,分隔)
     */
    @TableField(value = "incharge_area_name")
    private String inchargeAreaName;

    /**
     * 负责区域（使用表sys_region中的yzcode，多个区域使用,分隔)
     */
    @TableField(value = "incharge_area")
    private String inchargeArea;

    /**
     * 正式或者演示账号 1 正式账号  10 市场演示账号 100测试账号 
     */
    @TableField(value = "account_type")
    private Integer accountType;

    /**
     * 是直属分公司，还是是非伊鸿的人等等 1是直营 2代理
     */
    @TableField(value = "cooperation_type")
    private Integer cooperationType;

    /**
     * 有效起始时间
     */
    @TableField(value = "effective_start")
    private Date effectiveStart;

    /**
     * 有效截止时间
     */
    @TableField(value = "effective_end")
    private Date effectiveEnd;

    /**
     * 邀请码
     */
    @TableField(value = "invitation_code")
    private String invitationCode;

    /**
     * 上级id
     */
    @TableField(value = "parent_id")
    private Long parentId;

    /**
     * 上级名称
     */
    @TableField(value = "parent_name")
    private String parentName;

    /**
     * 父级邀请码
     */
    @TableField(value = "parent_invitation_code")
    private String parentInvitationCode;

    /**
     * 状态 0 可用  10禁用
     */
    @TableField(value = "`status`")
    private Byte status;

    /**
     * 分佣模式（1-5）
     */
    @TableField(value = "price_level")
    private Byte priceLevel;

    /**
     * 默认的价格方案id
     */
    @TableField(value = "default_price_profit_id")
    private Long defaultPriceProfitId;

    /**
     * 账号等级，事业部、一级合伙人、二级合伙人、销售人员
     */
    @TableField(value = "`level`")
    private Byte level;

    /**
     * 级别名称
     */
    @TableField(value = "level_name")
    private String levelName;

    /**
     * 关注的公众号openid
     */
    @TableField(value = "openid_subscription")
    private String openidSubscription;

    /**
     * 移动应用号openid
     */
    @TableField(value = "openid_application")
    private String openidApplication;

    /**
     * 上级合伙人实体
     */
    @TableField(value = "parent", exist = false)
    private TermAgentDO parent;

    public TermAgentDO getParent() {
        // 父级等于自己时，异常数据，返回空
        if (termAgentId.equals(parentId)) {
            return null;
        }
        return this.selectById(parentId);
    }

}